home *** CD-ROM | disk | FTP | other *** search
/ Personal Computer World 2009 February / PCWFEB09.iso / Software / Resources / Chat & Communication / Digsby build 37 / digsby_setup.exe / lib / social / myspace / MySpaceUtil.pyo (.txt) < prev   
Python Compiled Bytecode  |  2008-10-13  |  6KB  |  143 lines

  1. # Source Generated with Decompyle++
  2. # File: in.pyo (Python 2.5)
  3.  
  4. from util import fmt_to_dict, odict, this_list, rol, try_this
  5. from hashlib import sha1
  6. from M2Crypto.RC4 import RC4
  7. from base64 import b64encode, b64decode
  8. KEYLEN = 128
  9.  
  10. escape = lambda s: s.replace('/', '/1').replace('\\', '/2')
  11.  
  12. unescape = lambda s: s.replace('/1', '/').replace('/2', '\\')
  13.  
  14. def crypt(nc, password, data = ''):
  15.     (key, salt1) = make_key(nc, password)
  16.     return RC4(key).update(salt1 + data)
  17.  
  18.  
  19. def make_key(nc, password):
  20.     salt = b64decode(nc)
  21.     salt1 = salt[:32]
  22.     salt2 = salt[32:]
  23.     key = sha1(sha1(password.encode('utf-16-le')).digest() + salt2).digest()
  24.     key = key[:KEYLEN / 8]
  25.     rest = key[KEYLEN / 8:]
  26.     return (key, salt1)
  27.  
  28.  
  29. def decrypt(nonce, password, data):
  30.     (key, salt1) = make_key(nonce, password)
  31.     return RC4(key).update(b64decode(data))[len(salt1):]
  32.  
  33.  
  34. def roflcopter(chlnum, sesskey, uid):
  35.     return rol(sesskey, 5) ^ rol(uid, 9) ^ chlnum
  36.  
  37.  
  38. class msmsg(odict):
  39.     
  40.     def __init__(self, d_or_s = '', **k):
  41.         if isinstance(d_or_s, basestring):
  42.             self._orig = d_or_s
  43.             d = self.parse(d_or_s)
  44.         else:
  45.             d = d_or_s
  46.         odict.__init__(self, d, **k)
  47.         if 'body' in self:
  48.             self['body'] = unescape(str(self['body']))
  49.         
  50.         for None in self:
  51.             key = None
  52.             if (None, try_this)((lambda : '\x1c' in self[key]), False) or key == 'body':
  53.                 self[key] = msdict(self[key])
  54.             
  55.             for None in self:
  56.                 key = None
  57.                 if isinstance(self[key], basestring):
  58.                     
  59.                     try:
  60.                         self[key] = eval(self[key], { }, { })
  61.                     except Exception:
  62.                         pass
  63.                     except:
  64.                         None<EXCEPTION MATCH>Exception
  65.                     
  66.  
  67.             
  68.         
  69.  
  70.     
  71.     def cmd(self):
  72.         return self._keys[0]
  73.  
  74.     cmd = property(cmd)
  75.     
  76.     def parse(self, s):
  77.         if not s:
  78.             return { }
  79.         
  80.         data = s.strip('\\').split('\\')
  81.         return zip(data[::2], data[1::2])
  82.  
  83.     parse = classmethod(parse)
  84.     
  85.     def __str__(self):
  86.         return '\\%s\\final\\' % '\\'.join((lambda .0: for k, v in .0:
  87. '\\'.join((str(k), str(v))))(self.iteritems()))
  88.  
  89.  
  90.  
  91. class msdict(list):
  92.     delim1 = '\x1c'
  93.     delim2 = '='
  94.     
  95.     def __init__(self, s):
  96.         if s:
  97.             list.__init__((self,), (lambda .0: for entry in .0:
  98. entry.strip().split(self.delim2, 1))(s.split(self.delim1)))
  99.         else:
  100.             list.__init__(self)
  101.  
  102.     
  103.     def __getitem__(self, key):
  104.         
  105.         try:
  106.             return list.__getitem__(self, key)[1]
  107.         except Exception:
  108.             r = (filter,)((lambda x: x[0] == key), self)
  109.             if not r:
  110.                 raise 
  111.             elif len(r) == 1:
  112.                 return r[0][1]
  113.             else:
  114.                 return [ x[1] for x in r ]
  115.         except:
  116.             []
  117.  
  118.  
  119.     
  120.     def __str__(self):
  121.         
  122.         try:
  123.             return (self.delim1.join,)((lambda .0: for k, v in .0:
  124. '%s%s%s' % (k, self.delim2, escape(v)))(self.items()))
  125.         except Exception:
  126.             print repr(self)
  127.             raise 
  128.  
  129.  
  130.     
  131.     def items(self):
  132.         return self[:]
  133.  
  134.     
  135.     def keys(self):
  136.         return _[1]
  137.  
  138.     
  139.     def values(self):
  140.         return [ x[1] for x in self ]
  141.  
  142.  
  143.